package com.sinogrand.elevator.utils

import com.sinogrand.elevator.data.models.PageInfo

/**
 * 维保页面使用示例
 * 这个文件仅用于演示如何使用维保页面功能，实际项目中可以删除
 */
object MaintenanceScreenExample {
    
    /**
     * 维保页面功能说明
     */
    fun featureDescription() {
        println("=== 维保页面功能说明 ===")
        println("1. 项目类型筛选: 自动筛选维保项目 (type = ${Constants.ProjectType.MAINTENANCE})")
        println("2. 搜索功能: 支持按项目名称搜索")
        println("3. 分页加载: 支持下拉刷新和上拉加载更多")
        println("4. 状态显示: 显示项目状态和电梯数量")
        println("5. 分页判断: 使用 PaginationUtils 判断是否还有下一页")
    }
    
    /**
     * 维保项目状态映射示例
     */
    fun maintenanceStatusMapping() {
        println("\n=== 维保项目状态映射 ===")
        
        val statusMappings = mapOf(
            Constants.ProjectStatus.CONTRACT_PENDING to "待审批",
            Constants.ProjectStatus.DISABLED to "已禁用",
            Constants.ProjectStatus.PROCESSING to "进行中",
            Constants.ProjectStatus.ARCHIVE_PENDING to "已审批",
            Constants.ProjectStatus.ARCHIVED to "已完成"
        )
        
        statusMappings.forEach { (apiStatus, uiStatus) ->
            println("API状态: $apiStatus -> UI状态: $uiStatus")
        }
    }
    
    /**
     * 维保项目与安装项目的区别
     */
    fun projectTypeComparison() {
        println("\n=== 项目类型对比 ===")
        println("安装项目 (type = ${Constants.ProjectType.INSTALL}):")
        println("  - 新电梯安装项目")
        println("  - 包含电梯数量信息")
        println("  - 状态: 合同审批中 -> 待开工 -> 安装中 -> 待归档 -> 已归档")
        
        println("\n维保项目 (type = ${Constants.ProjectType.MAINTENANCE}):")
        println("  - 现有电梯维护保养项目")
        println("  - 包含电梯数量信息")
        println("  - 状态: 合同审批中 -> 待开工 -> 安装中 -> 待归档 -> 已归档")
        println("  - 注意: 维保项目使用相同的状态流程")
    }
    
    /**
     * API 调用示例
     */
    fun apiCallExample() {
        println("\n=== API 调用示例 ===")
        println("请求参数:")
        println("  - name: 项目名称搜索 (可选)")
        println("  - type: ${Constants.ProjectType.MAINTENANCE} (维保项目)")
        println("  - page: 页码 (默认 1)")
        println("  - size: 每页大小 (默认 20)")
        
        println("\n返回数据结构:")
        println("  - list: 项目列表")
        println("  - page_info: 分页信息")
        println("    - page: 当前页")
        println("    - size: 每页大小")
        println("    - total: 总条数")
    }
    
    /**
     * 分页功能示例
     */
    fun paginationExample() {
        println("\n=== 分页功能示例 ===")
        
        // 示例1: 有下一页的情况
        val pageInfoWithNext = PageInfo(
            page = 1,
            size = 10,
            total = 25
        )
        
        val hasNext = PaginationUtils.hasNextPage(pageInfoWithNext)
        val totalPages = PaginationUtils.getTotalPages(pageInfoWithNext)
        val nextPage = PaginationUtils.getNextPage(pageInfoWithNext)
        
        println("示例1 - 有下一页:")
        println("  当前页: ${pageInfoWithNext.page}")
        println("  每页大小: ${pageInfoWithNext.size}")
        println("  总条数: ${pageInfoWithNext.total}")
        println("  总页数: $totalPages")
        println("  是否有下一页: $hasNext")
        println("  下一页页码: $nextPage")
        
        // 示例2: 没有下一页的情况
        val pageInfoNoNext = PageInfo(
            page = 3,
            size = 10,
            total = 25
        )
        
        val hasNext2 = PaginationUtils.hasNextPage(pageInfoNoNext)
        val totalPages2 = PaginationUtils.getTotalPages(pageInfoNoNext)
        val nextPage2 = PaginationUtils.getNextPage(pageInfoNoNext)
        
        println("\n示例2 - 没有下一页:")
        println("  当前页: ${pageInfoNoNext.page}")
        println("  每页大小: ${pageInfoNoNext.size}")
        println("  总条数: ${pageInfoNoNext.total}")
        println("  总页数: $totalPages2")
        println("  是否有下一页: $hasNext2")
        println("  下一页页码: $nextPage2")
    }
}
